home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-01-05 | 1.4 KB | 92 lines | [TEXT/MPS ] |
- * Did you know GetIndString is glue code (not a trap)?
- * The GetIndString glue is written very badly, so I wrote one
- * myself, and wrote a useful variant for loops.
-
- CASE ON
-
- INCLUDE 'Traps.a'
-
- ;StringPtr GetPtrIndHString(Handle resH, short index)
-
- GetPtrIndHString PROC EXPORT
- resH EQU 8
- index EQU 14
- LINK A6,#0
- MOVEQ #0,D0
- MOVEA.L resH(A6),A0
- MOVEA.L (A0),A0
- MOVEQ #0,D1
- MOVE.W index(A6),D1
- CMP.W (A0)+,D1 ;number of strings
- BHI.S @err
- BRA.S @begin
- @loop
- MOVE.B (A0)+,D0
- ADDA.L D0,A0
- @begin
- DBF D1,@loop
- MOVE.L A0,D0
- @err
- UNLK A6
- RTS
-
- ENDP
-
- ;void GetIndHString(Str255 *dest, Handle resH, short index)
-
- GetIndHString PROC EXPORT
- dest EQU 8
- resH EQU 12
- index EQU 18
- LINK A6,#0
- MOVEA.L dest(A6),A1
- MOVEA.L resH(A6),A0
- MOVEA.L (A0),A0
- MOVEQ #0,D1
- MOVEQ #0,D0
- MOVE.W index(A6),D1
- CMP.W (A0)+,D1 ;number of strings
- BHI.S @err
- BRA.S @begin
- @loop
- MOVE.B (A0)+,D0
- ADDA.L D0,A0
- @begin
- DBF D1,@loop
- MOVE.B (A0),D0
- ADDQ.B #1,D0
- _BlockMove
- BRA.S @end
- @err
- CLR.W (A1)
- @end
- UNLK A6
- RTS
-
- ENDP
-
- ;Boolean KeyState(short key)
-
- KeyState PROC EXPORT
- mymap EQU -16
- key EQU 10 ;MPW C
- LINK A6,#mymap
- PEA mymap(A6)
- _GetKeys
- MOVEQ #0,D1
- MOVE.W key(A6),D1
- MOVE.L D1,D0
- LSR.W #3,D0 ; D0 = key/8
- ANDI.W #7,D1 ; D1 = key%8
-
- LEA mymap(A6),A0
- ADDA.W D0,A0 ; A0 = &KeyMap + key/8
- BTST.B D1,(A0)
- SNE D0
- UNLK A6
- RTS
-
- ENDP
-
- END
-